home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmiSoft / Hard / Drivr / 3c589.lha / 3c589 / Source / initializers.h < prev    next >
C/C++ Source or Header  |  2002-12-02  |  3KB  |  105 lines

  1. /*
  2.  
  3. $VER: initializers.h 41.3 (28.5.2002)
  4. Copyright (C) 2000-2002 Neil Cafferkey
  5.  
  6. This file is free software; you can redistribute it and/or modify it
  7. under the terms of the GNU Lesser General Public License as
  8. published by the Free Software Foundation; either version 2.1 of the
  9. License, or (at your option) any later version.
  10.  
  11. This file is distributed in the hope that it will be useful, but
  12. WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. Lesser General Public License for more details.
  15.  
  16. You should have received a copy of the GNU Lesser General Public
  17. License along with this file; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  19. MA 02111-1307, USA.
  20.  
  21. */
  22.  
  23. #ifndef EXEC_INITIALIZERS_H
  24. #define EXEC_INITIALIZERS_H
  25.  
  26. #include <exec/types.h>
  27.  
  28.  
  29. /* Use the OFFSET macro as the offset parameter of one of the other
  30.    macros */
  31. /*
  32. #ifdef OFFSET
  33. #undef OFFSET
  34. #endif
  35. */
  36. #define OFFSET(struct_name,struct_field) \
  37.    ((ULONG)(&(((struct struct_name *)0)->struct_field)))
  38.  
  39. /* Use the following macros in the structure definition */
  40.  
  41. #define INITBYTEDEF(name) \
  42.    UBYTE name ## _c; UBYTE name ## _o1; UBYTE name ## _o2; \
  43.    UBYTE name ## _o3; UBYTE name ## _v; UBYTE name ## _p
  44. #define INITWORDDEF(name) \
  45.    UBYTE name ## _c; UBYTE name ## _o1; UBYTE name ## _o2; \
  46.    UWORD name ## _v
  47. #define INITLONGDEF(name) \
  48.    UBYTE name ## _c; UBYTE name ## _o1; UBYTE name ## _o2; \
  49.    ULONG name ## _v
  50. #define INITPINTDEF(name) \
  51.    UBYTE name ## _c; UBYTE name ## _o1; UBYTE name ## _o2; \
  52.    UPINT name ## _v
  53.  
  54. #define SMALLINITBYTEDEF(name) \
  55.    UBYTE name ## _c; UBYTE name ## _o; UBYTE name ## _v; UBYTE name ## _p
  56. #define SMALLINITWORDDEF(name) \
  57.    UBYTE name ## _c; UBYTE name ## _o; UWORD name ## _v
  58. #define SMALLINITLONGDEF(name) \
  59.    UBYTE name ## _c; UBYTE name ## _o; ULONG name ## _v
  60. #define SMALLINITPINTDEF(name) \
  61.    UBYTE name ## _c; UBYTE name ## _o; UPINT name ## _v
  62.  
  63. #define INITENDDEF UBYTE the_end
  64.  
  65. /* Use the following macros to fill in a structure */
  66.  
  67. #define NEWINITBYTE(offset,value) \
  68.    0xe0,(UBYTE)((offset)>>16),(UBYTE)((offset)>>8),(UBYTE)(offset), \
  69.    (UBYTE)(value),0
  70. #define NEWINITWORD(offset,value) \
  71.    0xd0,(UBYTE)((offset)>>16),(UBYTE)((offset)>>8),(UBYTE)(offset), \
  72.    (UWORD)(value)
  73. #define NEWINITLONG(offset,value) \
  74.    0xc0,(UBYTE)((offset)>>16),(UBYTE)((offset)>>8),(UBYTE)(offset), \
  75.    (ULONG)(value)
  76. #define INITPINT(offset,value) \
  77.    0xc0,(UBYTE)((offset)>>16),(UBYTE)((offset)>>8),(UBYTE)(offset), \
  78.    (UPINT)(value)
  79.  
  80. #define SMALLINITBYTE(offset,value) \
  81.    0xa0,(offset),(UBYTE)(value),0
  82. #define SMALLINITWORD(offset,value) \
  83.    0x90,(offset),(UWORD)(value)
  84. #define SMALLINITLONG(offset,value) \
  85.    0x80,(offset),(ULONG)(value)
  86. #define SMALLINITPINT(offset,value) \
  87.    0x80,(offset),(UPINT)(value)
  88.  
  89. #define INITEND 0
  90.  
  91. /* Obsolete definitions */
  92.  
  93. #define INITBYTE(offset,value) \
  94.    (0xe000|((UWORD)(offset)>>16)),(UWORD)(offset),(UWORD)((value)<<8)
  95. #define INITWORD(offset,value) \
  96.    (0xd000|((UWORD)(offset)>>16)),(UWORD)(offset),(UWORD)(value)
  97. #define INITLONG(offset,value) \
  98.    (0xc000|((UWORD)(offset)>>16)),(UWORD)(offset),(UWORD)((value)>>16), \
  99.    (UWORD)(value)
  100. #define INITAPTR(offset,value) \
  101.    (0xc000|((UWORD)(offset)>>16)),(UWORD)(offset), \
  102.    (UWORD)((ULONG)(value)>>16),(UWORD)(value)
  103.  
  104. #endif
  105.